/**
WOP_Array_Entry

如同ArrayRef和Ref_Entry的關係，
Array_Entry和Obj_Entry也是關係密切，兩人都是作為容器使用，幾乎一模一樣。

唯一的不同點，只是子元素的命名。
	Obj_Entry: p.x  p.y  p.a
	ArrayEntry p[1] p[2] p[3]

12/24 - 賴念煒 - 新增檔案



12/24

initElementEntries()遭遇困難，int要怎麼變成string的一部份？只好先放著
其中的max尚未向CA取得，現在訂為3，以後記得補上
**/

#ifndef _WOP_Array_Entry_H_
#define	_WOP_Array_Entry_H_
/*------------------------------------------------------------*/
#include "WOP_Heap_Entry.h"
//#include "src/MappingTree.h"
//這個include Vector是經由VC ++給予的"新增include目錄"功能，把前方的路徑省略
//所以如果換其他的IDE發現路徑錯誤，請自行更改路徑。
//Vector元件原位址:"smith/util/Vector.h"

class WOP_Array_Entry:public WOP_Heap_Entry{

	
protected:
	WOP_Array_Entry(){}
	std::vector<int> dimension_range;
	
public:
	WOP_Array_Entry(string s,WOP_Entry *parent);//其name和value皆為記憶體hashcode(JDB給予)
	string getActualPath(string name);
	string getTypeStr() { return std::string("array"); }

	/** dimension range is a vector which is set by command_agent
	    when you unfold xxx 0 9, the array is 1-D dimension. Dimension range vector contains a 10
		when you unfold xxx 0 0 9 9, the array is 2-D. Dimension range vector contains 10 10 
	*/
	virtual void setDimensionRange(std::vector<int> d){
		dimension_range = d;
	}
	virtual std::vector<int> getDimensionRange() { return dimension_range ; }
	virtual int getDimension() { return dimension_range.size(); }
	string getGenericName();
	string getArrayElementType();
};
/*------------------------------------------------------------*/
#endif	//#ifndef _WOP_Array_Entry_H_